package 开发算法.布隆过滤器.guava;

import com.google.common.base.Charsets;
import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnel;
import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

/**
 * 测试对象 只有是同一个对象才会返回true
 *
 * 判断是否存在，false则表示一定不存在； true表示可能存在
 */
public class GuavaObjectTest {

    /*
    批量统计
     */
    @Test
    public void testBloom2() {
        /* 一、创建布隆过滤器 */
        BloomFilter<Map> bloomFilter = BloomFilter.create((Funnel<Map>) (map, primitiveSink) ->
                primitiveSink.putString(map.toString(), Charsets.UTF_8),
                1_000,
                0.001
        );

        Map<String, String> map = new HashMap();
        map.put("a", "a");
        bloomFilter.put(map);
        System.out.println(bloomFilter.mightContain(map));
        map.put("b", "b");
        System.out.println(bloomFilter.mightContain(map));
    }

    @Test
    public void testBloom3() {
        /* 一、创建布隆过滤器 */
        BloomFilter<String> bloomFilter = BloomFilter.create((Funnel<String>) (str, primitiveSink) ->
                        primitiveSink.putString(str, Charsets.UTF_8),
                1_000,
                0.001
        );

        bloomFilter.put("b");

        System.out.println(bloomFilter.mightContain("a"));
        System.out.println(bloomFilter.mightContain("b"));
    }
}
